为什么进入Launcher界面之后UART Log就不吐了?

[DESCRIPTION]
UART Log是Targe端Linux kernel透过UART硬件以固定的波特率传输到PC端的一种log方式,这种方式由于在操作过程中的一些lock机制以及硬件传输的限制会在较大程度上影响系统的Performance,严重的时候可能达到20%的程度,甚至可能卡住系统导致重启。
 
UART Log在USER版本上是默认关闭的,ENG版本则默认打开。由于UART Log对Performance有影响,所以对于一些Performance的测试我们都会要求关闭UART log进行测试对比。在某一些问题上面,UART log对系统的影响也可能导致user版本和eng版本有不同的行为。
 
针对这种差异,我们从JB9.MP这个分支开始做了一个新的feature,ENG版本在开机到Launcher之后自动关闭UART Log,从而使几乎大部分的测试在eng版本和user版本上得到一致的测试结果。
 
抓UART Log的时候会看到类似下面的Log。
[   25.986567].(1)[324:Binder_1][usktrk] socket close[10422]
[   25.987748].(1)[324:Binder_1]BOOTPROF:     25987.740155:BOOT_Animation:END
[   25.988616].(1)[324:Binder_1]<< printk console disable >>
 
那如何打开UART log呢?
 
[SOLUTION]
有两种种方法可以在eng版本上临时打开UART log(重启之后失效):
  1. 超级终端窗口按下键盘的任何一个按键就可以让UART log继续吐。此种方式需要UART的TX和RX都要连接好。
  2. 通过修改proc参数的方式: adb shell echo 1 > /proc/mtprintk
 
还有一种方法可以在eng版本上面永久性打开UART Log (重启之后继续有效):
  • 通过修改Property的方式:adb shell setprop persist.uartconsole.enable 1


终极办法:kernel/kernel/printk.c

inline void mt_disable_uart()
{   
    if(mt_need_uart_console == 0){                                                      
        printk("<< printk console disable >>\n");                                       
        printk_disable_uart = 0;//1  //modified by   xxx on 20140627 temp
    }else{                                                                              
        printk("<< printk console can't be disabled >>\n");                             
    }   
}   


 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值